import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession

object WordCount {
  def main(args: Array[String]): Unit = {
    //-0. spark配置对象
    val sparkConf = new SparkConf()
      .setMaster("local[*]")
    // 1. 创建sparkSession对象
    val spark = SparkSession.builder()
      .appName("WordCount")
      .config(sparkConf)
      .getOrCreate()
    // 2. 导入隐式函数
    import spark.implicits._
    // 3. 读取数据，从 socket中读取数据
    val lines = spark.readStream
      .format("socket")
      .option("host","192.168.80.104")
      .option("port",9999)
      .load()
      .as[String]
    //4. 将每一行数据进行拆分，并进行词频的统计
    // 备注：socket输入的内容，使用 ， 分割，例如：hadoop,scala,spark
    val words = lines.flatMap(_.split(","))
      .groupBy("value")
      .count()
    //5. 输出聚合的结果
    val query = words.writeStream
      .outputMode("update") //例如：append 等
      .format("console")
      .start()
    //6. 启动流计算
    query.awaitTermination()

  }
}
